From: Vivek Kumar Chaubey Date: Mon, 21 Aug 2017 13:49:36 +0000 (+0200) Subject: hvmloader: support system enclosure asset tag (SMBIOS type 3) X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~1632 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=cd3ed39b9df088f89a7dab69053c323a2b490330;p=xen.git hvmloader: support system enclosure asset tag (SMBIOS type 3) Allow setting system enclosure asset tag for HVM guest. Guest OS can check and perform desired operation like support installation. Also added documentation of '~/bios-string/*' xenstore keys into docs/misc/xenstore-paths.markdown Signed-off-by: Vivek Kumar Chaubey Acked-by: Jan Beulich --- diff --git a/docs/misc/xenstore-paths.markdown b/docs/misc/xenstore-paths.markdown index 6c80a9eb55..7be2592c74 100644 --- a/docs/misc/xenstore-paths.markdown +++ b/docs/misc/xenstore-paths.markdown @@ -211,6 +211,28 @@ will not relocate guest memory. The BIOS used by this domain. +#### ~/bios-strings/bios-vendor = STRING [HVM,INTERNAL] +#### ~/bios-strings/bios-version = STRING [HVM,INTERNAL] +#### ~/bios-strings/system-manufacturer = STRING [HVM,INTERNAL] +#### ~/bios-strings/system-product-name = STRING [HVM,INTERNAL] +#### ~/bios-strings/system-version = STRING [HVM,INTERNAL] +#### ~/bios-strings/system-serial-number = STRING [HVM,INTERNAL] +#### ~/bios-strings/enclosure-manufacturer = STRING [HVM,INTERNAL] +#### ~/bios-strings/enclosure-serial-number = STRING [HVM,INTERNAL] +#### ~/bios-strings/enclosure-asset-tag = STRING [HVM,INTERNAL] +#### ~/bios-strings/battery-manufacturer = STRING [HVM,INTERNAL] +#### ~/bios-strings/battery-device-name = STRING [HVM,INTERNAL] + +These xenstore values are used to override some of the default string +values in the SMBIOS table constructed in hvmloader. See the SMBIOS +table specification at http://www.dmtf.org/standards/smbios/ + +#### ~/bios-strings/oem-* = STRING [HVM,INTERNAL] + +1 to 99 OEM strings can be set in xenstore using values of the form +'~/bios-strings/oem-1' to '~/bios-strings/oem-99'. These strings will be +loaded into the SMBIOS type 11 structure. + #### ~/platform/* = ("0"|"1") [HVM,INTERNAL] Various boolean platform properties. diff --git a/tools/firmware/hvmloader/smbios.c b/tools/firmware/hvmloader/smbios.c index 210c7b0d35..154747d21f 100644 --- a/tools/firmware/hvmloader/smbios.c +++ b/tools/firmware/hvmloader/smbios.c @@ -531,6 +531,7 @@ smbios_type_3_init(void *start) const char *s; void *pts; uint32_t length; + uint32_t counter = 0; pts = get_smbios_pt_struct(3, &length); if ( (pts != NULL)&&(length > 0) ) @@ -546,7 +547,7 @@ smbios_type_3_init(void *start) p->header.length = sizeof(struct smbios_type_3); p->header.handle = SMBIOS_HANDLE_TYPE3; - p->manufacturer_str = 1; + p->manufacturer_str = ++counter; p->type = 0x01; /* other */ p->version_str = 0; p->serial_number_str = 0; @@ -562,13 +563,20 @@ smbios_type_3_init(void *start) strcpy((char *)start, s); start += strlen(s) + 1; - /* No internal defaults for this if the value is not set */ + /* No internal defaults for following ones if the value is not set */ s = xenstore_read(HVM_XS_ENCLOSURE_SERIAL_NUMBER, NULL); if ( (s != NULL)&&(*s != '\0') ) { strcpy((char *)start, s); start += strlen(s) + 1; - p->serial_number_str = 2; + p->serial_number_str = ++counter; + } + s = xenstore_read(HVM_XS_ENCLOSURE_ASSET_TAG, NULL); + if ( (s != NULL) && (*s != '\0') ) + { + strcpy(start, s); + start += strlen(s) + 1; + p->asset_tag_str = ++counter; } *((uint8_t *)start) = 0; diff --git a/xen/include/public/hvm/hvm_xs_strings.h b/xen/include/public/hvm/hvm_xs_strings.h index 146b0b0582..fea1dd4407 100644 --- a/xen/include/public/hvm/hvm_xs_strings.h +++ b/xen/include/public/hvm/hvm_xs_strings.h @@ -71,6 +71,7 @@ #define HVM_XS_SYSTEM_SERIAL_NUMBER "bios-strings/system-serial-number" #define HVM_XS_ENCLOSURE_MANUFACTURER "bios-strings/enclosure-manufacturer" #define HVM_XS_ENCLOSURE_SERIAL_NUMBER "bios-strings/enclosure-serial-number" +#define HVM_XS_ENCLOSURE_ASSET_TAG "bios-strings/enclosure-asset-tag" #define HVM_XS_BATTERY_MANUFACTURER "bios-strings/battery-manufacturer" #define HVM_XS_BATTERY_DEVICE_NAME "bios-strings/battery-device-name"